// 交叉类型(交集) &; 联合类型(并集)  | 



interface Person1{
    handsome:string,
    address:{
        n:string
    }
}
interface Person2{
    hight:string,
    address:{
        n:number
    }
}
// &会将每个interface里面的额数据都进行比较
/* type Person = Person1 & Person2
let p:Person={
    handsome:'',
    hight:'',
    address:{
        n:'as'//交叉类型  交叉出来的结果 可以赋予给A 也可以给B  生成的交叉类型 是A B的子类，内部的嵌套类型也会做交叉类型
    }
} */

function mixin<T,U>(a:T,b:U):T&U{
    return {...a,...b}
}
let r = mixin({a:1,b:2},{c:3,b:"a"})
r.b



export{}